n = int(input())
a = []
for i in range(n):
a.append(input())
for i in range(n-2,-1,-1):
if a[i] <= a[i+1]:
continue
else:
j = 0
while j < len(a[i]) and j < len(a[i+1]):
if a[i][j] == a[i+1][j]:
j += 1
elif a[i][j] > a[i+1][j]:
break
a[i] = a[i][:j]
for i in range(n):
print(a[i])
#include<bits/stdc++.h>
using namespace std;
const long long MAX = 2e18;
int main(){
// freopen("test.INP", "r", stdin);
int test_case;
test_case = 1;
while (test_case--){
int n;
cin >> n;
vector<string> s(n);
for (int i = 0; i < n; i++) cin >> s[i];
for (int i = n - 2; i >= 0; i--){
int last = -1;
for (int j = 1; j < s[i].length(); j++){
if (s[i+1].length() <= j){
last = j;
break;
}
if (s[i+1][j] == s[i][j]) continue;
else if (s[i+1][j] > s[i][j]) break;
else {
last = j;
break;
}
}
if (last == -1) continue;
s[i] = s[i].substr(0, last);
}
for (int i = 0; i < n; i++){
cout << s[i] << endl;
}
}
}
MATCHES Playing with Matches | HRDSEQ Hard Sequence |
DRCHEF Doctor Chef | 559. Maximum Depth of N-ary Tree |
821. Shortest Distance to a Character | 1441. Build an Array With Stack Operations |
1356. Sort Integers by The Number of 1 Bits | 922. Sort Array By Parity II |
344. Reverse String | 1047. Remove All Adjacent Duplicates In String |
977. Squares of a Sorted Array | 852. Peak Index in a Mountain Array |
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |